This invention relates to the operation of a multi-user system in which data referred to but not varied by the users are updated while the system operates on a 24-hour a day basis. More specifically, the present invention relates to a method and means for managing process reference to data which allows the data to be resident in storage for the duration of system operation and to be reached without the use of system locks, even though dynamic change to the data is taking place. With still greater particularity, the invention relates to a method for managing message format data elements resident in a multi-programming or multi-processing host computer and accessed by a plurality of message processes without the use of exclusion mechanisms such as locks, even though message processes are gaining access to the message format data at the same time that the format data is being updated and interrelationships within the data elements require that sets of elements be changed concurrently.
The problem of exerting control over the access of concurrent processes to variable data is known in the art. When one executing process in a multi-tasking system makes reference to a variable data object, the integrity of the data object must be protected against the action of another executing process.
The solution to this problem has been to synchronize concurrently-executing processes in order to prevent one process referring to a variable data object simultaneously with another process altering the data object. Hwang and Briggs in the work entitled COMPUTER ARCHITECTURE AND PARALLEL PROCESSING, McGraw-Hill, Inc., 1984 propound two types of synchronization: mutual exclusion and condition synchronization. Mutual exclusion involves giving exclusive use of a variable data object to one of a plurality of simultaneously executing processes. Condition synchronization establishes a condition variable that indicates the availability of a shared data object. Each process requiring access to the shared data object first inspects the condition variable to determine whether another process is using the shared data object. When a process uses the data object, it places the condition variable in a state indicating the object is in use, and reconditions the variable when it has finished its use of the object. Processes awaiting access to the shared data object customarily suspend execution until access is available.
The practicable implementations of serialization are found in mechanisms such as locks and semaphores. The IBM/370 described in IBM Publication No. SA 22-7085-0 also provides a family of atomic operations that are useful for serialization. These atomic operations test and modify a condition variable in a single read-modify-write instruction cycle. The atomic operations are completed in one cycle so that the condition variable is not tested and set by another process before the currently-executing process completes its operation. Thus, the operations are "atomic" in the sense that they either succeed completely in altering the condition of the condition variable or fail, in which case the variable is left unchanged.
U.S. Pat. No. 4,399,504 of Obermarck teaches the use of lock management to control access to data resources shared by two or more central electronic complexes. U.S. patent application Ser. No. 787,221, filed Oct. 15, 1985, entitled "Extended Atomic Operations," and assigned to the assignee of this application describes the use of atomic operations such as the compare and swap instruction to permit simultaneously-executing processes to concurrently access variable data objects.
A problem related to, but distinguishable from that of serialization of access to shared variable data objects arises in the context of updating interrelated data objects in a system which operates continuously with no provision for interruption and permits passive reference to the data objects by a plurality of users. Thus, in the prior art IBM IMS (Information Management System)/VS (Virtual Storage) product, a service denoted as MFS (Message Format Service) maintains a library of message format descriptors. In this regard, a descriptor is a set of one or more message attributes. The descriptors in the IBM MFS are used to establish message format abstractions in multi-user systems which support the concurrent execution of a plurality of interactive application programs. For example, a banking system may include a number of remote electronic tellers connected to a central computer to provide banking services to bank customers outside of the bank. A banking transaction is conducted between a customer and the central computer through an electronic teller by means of a transaction application program resident in the central computer that supports interaction between the customer and the teller. Such interaction can take place, for example, through a screen in the electronic teller which provides messages to the customer, and an electronic keyboard panel through which the customer provides messages to the teller.
The formats of the messages are standard and are characterized by data elements called message input descriptors (MID) and message output descriptors (MOD). In this regard, a MOD establishes the format of an output message which is generated by a host computer application program destined for a terminal in terms of message length, numbers of fields, size of fields, and data element types. The MID establishes the format of input messages from the terminal destined to the host computer application in a similar manner.
Differing terminal devices require unique datastream formats and control characters embedded in messages. Thus, for each type of terminal device, a device format description is also provided in a device input format (DIF) and device output format (DOF). The IBM MFS uses a MID/DIF combination to convert a terminal-generated input message into the proper format and content for processing by the application program and uses a MOD/DOF combination to convert the application program output into the datastream format and content required by the terminal device, thus making the application independent of the various requirements of specific individual devices.
The relationship between these pairs of elements requires that they be changed in sets rather than PG,7 individually. Thus, changing a MOD can require changing one or more DOF's.
Further, it is known that data structures such as format records are maintained in data files and that access to such files can be provided by any one of a number of data base access methods. One common access technique is referred to as "indexing," wherein data structures are stored and retrieved on the basis of keys that are within and form a port of each data structure. Two well-known methods of indexing are file indexing and hashing.
File indexation is based upon existence of an index file which associates a pointer with a specified value for a particular data structure field. The pointer indicates the storage location of a data structure having the specified value in the particular field.
Hashing is a method of indexation wherein the name (key) of a data structure is mathematically manipulated to derive an entry in a file called a "hash table." Each hash table entry points to a hash address associated with one or more named dta structures.
Characteristically, in the 24-hour day operation of an electronic banking system, MID's, MOD's, DIF's, and DOF's (referred to collectively hereinafter as message format descriptors) must be available without interruption to support electronic teller transactions at any time of day. However, when it is the case that the message format descriptors must be updated to reflect changed external conditions, the problem of access to the format elements takes on a different complexion than the problem of access serialization to shared variable data resources. In this regard, concurrent access to the format elements must be provided to the electronic tellers without interruption in order to maintain the continuity of banking services. The message format descriptors are also potentially in use for a long time if a terminal is left unattended. The relationship between the elements is complex and may require the changing of dozens of descriptors simultaneously to effect a desired overall format change. If a descriptor is altered, any electronic tellers currently displaying messages which use it must continue to use the old version until the transaction is complete. Electronic tellers receiving messages after alteration of a format may use a new descriptor to display the messages. Thus, the ability to gain access to the old elements as well as the new by different electronic tellers is required.
In the interest of maximizing overall system performance, since message format data is highly utilized (a set of four elements per transaction is required, including MID, MOD, DIF, and DOF) and change to these elements in a system in operation is infrequent, any technique of changeover which is utilized must not add to the overall time of message processing. This consideration effectively eliminates the use of a standard process synchronization technique such as the lock discussed above, since such a technique is time-consuming.
Further, since a change of descriptors for any individual terminal must be made between transactions and since transactions in a large network are in a constant state of overlap, processing would have to be suspended for a period of time to permit a change to occur. In a production environment, this approach becomes impractical.
Therefore, there is an evident need for a technique and a system to manage message format data which allows the data to be resident in system storage for the duration of process execution, and to be accessed without the use of time-consuming serialization techniques even though dynamic change to the formats is occurring.